package thread.ch04;

import thread.annotation.GuardBy;

/**
 * 私有锁保护状态<br />
 * 使用私有锁对象，而不是对象的内部锁（或其它可公共访问的锁），有很多好处。私有的锁对象可以封装锁，这样客户代码无法得到它。
 * 然而可公共访问的锁允许客户代码涉足它的同步策略
 * ——正确地或不正确地。客户不正确得到另一个对象的锁，会引起活跃度方面的问题。另外要验证程序是正确地使用着一个可公共访问的锁
 * ，需要检查完整的程序，而不是一个单独的类。
 * 
 * @author Edgar Zhang
 * 
 */
public class PrivateLock {

	private final Object myLock = new Object();

	@GuardBy("myLock")
	Widget widget;

	void someMethod() {
		synchronized (myLock) {

		}
	}
}
